home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / basic / pbtool.exe / PBCOPY.BAS < prev    next >
BASIC Source File  |  1991-10-31  |  3KB  |  92 lines

  1. '----------------------------------------------------------
  2. '  PROGRAM: PBCOPY.BAS         PROGRAMMER: A. KELLETT
  3. '  DATE-WRITTEN: 06/13/91
  4. '  USING POWER BASIC V2.10A
  5. '
  6. '  THIS PROGRAM COPIES FILES AS FAST AS POSSIBLE
  7. '
  8. '  VERSION: 0.95    LAST UPDATED: 10/31/91
  9. '----------------------------------------------------------
  10. '  WHILE TESTING, COPYING A 1.8MB DBASE OVERLAY WAS TIMED AT:
  11. '          PBCOPY = 13 SEC      DOS COPY = 9 SEC
  12. '
  13. CLS
  14. SIZE.BUFFER1% = 32000
  15. SIZE.BUFFER2% = 15000
  16. SIZE.BUFFER3% = 5000
  17. SIZE.BUFFER4% = 1500
  18. SIZE.BUFFER5% = 100
  19. VERSION$ = "0.95"
  20. PRINT "PBCOPY V";VERSION$;" - THIS PROGRAM COPIES A SINGLE FILE. - ANDY K."
  21.  
  22. LOCATE 5,5:INPUT "NAME OF INPUT FILE: ";FILENAME1$
  23. IF FILENAME1$ = "" THEN
  24.    PRINT "     YOU MUST ENTER A FILE NAME -- PROGRAM ENDING. "
  25.    END
  26. END IF
  27.  
  28. '*** CHECK VALIDITY OF INPUT FILE NAME ***
  29. OPEN FILENAME1$ FOR BINARY AS #1
  30.    IF LOF(1) < 1 THEN
  31.       PRINT "     THE INPUT FILE DOES NOT EXISTS."
  32.       CLOSE #1
  33.       KILL FILENAME1$
  34.       DELAY 1.5
  35.       LOCATE 22,1
  36.       END
  37.    END IF
  38. CLOSE #1
  39. LOCATE 6,5:INPUT "NAME OF OUTPUT FILE: ";FILENAME2$
  40. '*** CHECK VALIDITY OF OUTPUT FILE NAME ***
  41. OPEN FILENAME2$ FOR BINARY AS #2
  42.    IF LOF(2) > 1 THEN
  43.       PRINT "     THE OUTPUT FILE ALREADY EXISTS."
  44.       CLOSE #2
  45.       KILL FILENAME2$
  46.       DELAY 2.5
  47.       LOCATE 22,1
  48.       END
  49.    END IF
  50. CLOSE #2
  51.  
  52. '*** OPEN BOTH FILES, READ & PROCESS & WRITE, CLOSE BOTH FILES ***
  53. START$ = TIME$
  54. LOCATE 14,5:PRINT "WORKING ON BYTE: "
  55. OPEN FILENAME1$ FOR BINARY AS #1
  56. OPEN FILENAME2$ FOR BINARY AS #2
  57.    FILE1EOF& = LOF(1)
  58.    LOCATE 13,5:PRINT USING "TOTAL BYTES IN FILE: #,###,###";FILE1EOF&
  59.    WHILE RECPOSITION& < FILE1EOF&
  60.       IF RECPOSITION& < (FILE1EOF& - SIZE.BUFFER1%) THEN
  61.          NUM.BYTES% = SIZE.BUFFER1%
  62.       ELSE
  63.          IF RECPOSITION& < (FILE1EOF& - SIZE.BUFFER2%) THEN
  64.             NUM.BYTES% = SIZE.BUFFER2%
  65.          ELSE
  66.             IF RECPOSITION& < (FILE1EOF& - SIZE.BUFFER3%) THEN
  67.                NUM.BYTES% = SIZE.BUFFER3%
  68.             ELSE
  69.                IF RECPOSITION& < (FILE1EOF& - SIZE.BUFFER4%) THEN
  70.                   NUM.BYTES% = SIZE.BUFFER4%
  71.                ELSE
  72.                   IF RECPOSITION& < (FILE1EOF& - SIZE.BUFFER5%) THEN
  73.                      NUM.BYTES% = SIZE.BUFFER5%
  74.                   ELSE
  75.                      NUM.BYTES% = 1
  76.                   END IF
  77.                END IF
  78.             END IF
  79.          END IF
  80.       END IF
  81.       SEEK 1, RECPOSITION&
  82.       GET$ 1, NUM.BYTES%, CHAR$
  83.       PUT$ 2, CHAR$
  84.       RECPOSITION& = RECPOSITION& + NUM.BYTES%
  85.       LOCATE 14, 22:PRINT USING "#,###,###";RECPOSITION&
  86.    WEND
  87. CLOSE #2:CLOSE #1
  88. LOCATE 16,10:PRINT "PROGRAM COMPLETED"
  89. PRINT "START: ";START$;"  FINISHED: ";TIME$
  90. END
  91.  
  92.